#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cabecera.h"

	int compruebaExistencias(char* libreria, char* nombreLibro){
		FILE* archivo;
		char aux1[100],aux2[200],aux3[300];
		archivo = fopen(libreria, "r");
		while(fgets(aux1, 100, archivo) != NULL){
			fgets(aux2, 100, archivo);
			fgets(aux3, 100, archivo);
			aux1[strlen(aux1)-1] = '\0';
			if(strcmp(aux1, nombreLibro) == 0){
				return 1;
			}
		}
		fclose(archivo);
			return 0;
	}

	void introduceLibro(char* libreria){
		FILE* archivo;
		struct Libro nuevoLibro = leeLibro();
		archivo = fopen(libreria, "a");
		fprintf(archivo, "%s", nuevoLibro.nombre);
		fprintf(archivo, "%s", nuevoLibro.autor);
		fprintf(archivo, "%.3f %d\n", nuevoLibro.precio, nuevoLibro.unidades);

		fclose(archivo);
	}

	int cuentaLibros(char* libreria){
		FILE* archivo;
		int contador = 0;
		char aux1[100],aux2[200],aux3[300];
		archivo = fopen(libreria, "r");
		while(fgets(aux1, 100, archivo) != NULL){
			fgets(aux2, 100, archivo);
			fgets(aux3, 100, archivo);
			contador++;
		}
		fclose(archivo);
		return contador;
	}

	int vendeLibro(char* libreria, char* titulo){
		FILE *archivo, *archivoaux;
		int unidades, encontrado = 0;
		float precio;
		archivo = fopen(libreria, "r");
		char aux1[100],aux2[200];
		archivoaux = fopen("aux.txt", "w");
		while(fgets(aux1, 100, archivo) != NULL){
			fgets(aux2, 100, archivo);
			fscanf(archivo, "%f %d\n", &precio, &unidades);
			aux1[strlen(aux1)-1] = '\0';
			aux2[strlen(aux2)-1] = '\0';
			if(strcmp(aux1,titulo) == 0){
				unidades--;
				encontrado = 1;
			}
			fprintf(archivoaux, "%s\n", aux1);
			fprintf(archivoaux, "%s\n", aux2);
			fprintf(archivoaux, "%.3f %d\n", precio, unidades);
		}

		fclose(archivo);
		fclose(archivoaux);
		remove(libreria);
		rename("aux.txt", libreria);
		return encontrado;
	}

	void borradoFisico(char* libreria){
		FILE* archivo, *archivoaux;
		float precio;
		int unidades;
		archivo = fopen(libreria, "r");
		archivoaux = fopen("aux.txt", "w");

		char aux1[100], aux2[100];

		while(fgets(aux1,100,archivo) != NULL){
			fgets(aux2,100,archivo);
			fscanf(archivo, "%f %d\n", &precio, &unidades);
			aux1[strlen(aux1)-1] = '\0';
			aux2[strlen(aux2)-1] = '\0';
			if(unidades != 0){
				fprintf(archivoaux, "%s\n", aux1);
				fprintf(archivoaux, "%s\n", aux2);
				fprintf(archivoaux, "%.3f %d\n", precio, unidades);
			}
		}
		fclose(archivo);
		fclose(archivoaux);
		remove(libreria);
		rename("aux.txt", libreria);
	}

	struct Libro leeLibro(){
		struct Libro aux;
		printf("Introduzca el titulo del libro: ");
		fgets(aux.nombre, 100, stdin);

		printf("Introduzca el autor del libro: ");
		fgets(aux.autor, 100, stdin);

		printf("Introduzca el numero de ejemplares: ");
		scanf("%d",&aux.unidades);

		printf("Introduzca el precio del libro: ");
		scanf("%f",&aux.precio);

		return aux;
	}

	void listaLibros(char* libreria){
		FILE* archivo;
		int cuantosLibros,i;
		cuantosLibros = cuentaLibros(libreria);
		struct Libro* libros = (struct Libro*) malloc(sizeof(struct Libro)*cuantosLibros);
		archivo = fopen(libreria, "r");

		for(i=0; i<cuantosLibros; i++){
			fgets(libros[i].nombre, 100, archivo);
			fgets(libros[i].autor, 100, archivo);
			fscanf(archivo, "%f %d\n", &(libros[i].precio), &(libros[i].unidades));
			libros[i].nombre[strlen(libros[i].nombre)-1] = '\0';
			libros[i].autor[strlen(libros[i].autor)-1] = '\0';


			printf("LIBRO [%d]\n",i);
			printf("Nombre: %s \n",libros[i].nombre);
			printf("Autor: %s \n",libros[i].autor);
			printf("Precio: %.3f \n",libros[i].precio);
			printf("Unidades: %d \n",libros[i].unidades);
			printf("\n");
		}
		fclose(archivo);
	}
